package unimelb.distSystems.project2;

/*
 * Lim Ching Lih, 308721
 * Yu Xia, 351025
 * Carlos Vasconcelos, 193554
 */

import java.awt.Container;

import javax.swing.JLabel;

/*
 * Superclass and template for screen GUIs to design and build
 */
public abstract class GUIScreen{
	//Provide convenient GUI breaklines for subclasses
	protected JLabel blank = new JLabel(" ");
	protected JLabel blank2 = new JLabel(" ");
	protected JLabel blank3 = new JLabel(" ");
	protected JLabel blank4 = new JLabel(" ");
	
	public GUIScreen()
	{
		//Do nothing
	}
	
	/*
	 * Before displaying GUI screen, do actions required first
	 * Input: Nothing
	 * Output: Nothing
	 * Expected: Actions get executed in background
	 */
	public abstract void perform_actions_prior_display();
	
	/*
	 * Before being swapped out, do actions required first
	 * Input: Nothing
	 * Output: Nothing
	 * Expected: Actions get executed in background
	 */
	public abstract void perform_actions_prior_exit();
	
	/*
	 * Load its various components into window frame
	 * Input: Reference of window frame container to load components
	 * Output: Nothing
	 */
	public abstract void display(Container screen_container);
	
	/*
	 * Set up listeners for human interactions for this screen
	 * Input: Reference of window frame in order to access to various methods
	 * Output: Nothing
	 */
	protected abstract void initialise_listeners(final Game client);	
}
